﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;

namespace Proyecta.Helpers
{
    /// <summary>
    /// Clase para envio de correos electronicos.
    /// </summary>
    public class MailHelper
    {
        public string Servidor { get; set; }
        public int Puerto { get; set; }
        public string Usuario { get; set; }
        public string Contrasena { get; set; }
        public bool UsarSSL { get; set; }

        public string De { get; set; }
        public bool EnHTML { get; set; }
        public string Asunto { get; set; }
        public string Mensaje { get; set; }
        
        private MailMessage mensaje;

        public MailHelper()
        {
            mensaje = new MailMessage();
        }

        public bool Enviar()
        {
            try
            {
                this.mensaje.From = new MailAddress(this.De);
                this.mensaje.IsBodyHtml = this.EnHTML;
                this.mensaje.Subject = this.Asunto;
                this.mensaje.Body = this.Mensaje;

                SmtpClient smtp = new SmtpClient();
                smtp.Host = this.Servidor;
                smtp.Port = this.Puerto;
                smtp.EnableSsl = this.UsarSSL;

                if (!string.IsNullOrEmpty(this.Usuario) && !string.IsNullOrEmpty(this.Contrasena))
                {
                    smtp.UseDefaultCredentials = true;
                    smtp.Credentials = new System.Net.NetworkCredential(this.Usuario, this.Contrasena);
                }
                smtp.Send(this.mensaje);
                return true;
            }
            catch
            {
                return false;
            }
        }

        public void AgregaPara(string email, string nombre)
        {
            this.mensaje.To.Add(new MailAddress(email, nombre));
        }

        public void AgregarCC(string email, string nombre)
        {
            this.mensaje.CC.Add(new MailAddress(email, nombre));
        }

        public void AgregarCCO(string email, string nombre)
        {
            this.mensaje.Bcc.Add(new MailAddress(email, nombre));
        }
    }
}